﻿using KeepAnimals.DAL._DataAccess.SqlServer;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace KeepAnimals.DAL._DataAccess
{
    public static class DbAccessorFactory
    {
        // Nom de la clé de l'entrée dans le fichier app.config
        private const string KEY_DATABASE_TYPE = "DatabaseType";
        private const string KEY_CONNECTION_STRING = "ConnectionString";

        // valeurs possibles de la clé KEY_DATABASE_TYPE dans le 
        // fichier app.config.
        private const string KEY_DB_SQLSERVER = "SqlServer";
        private const string KEY_DB_MYSQL = "MySql";


        public static AbstractDbAccessor Create(DataMapper mappedObject)
        {
            AbstractDbAccessor result = null;

            // On récupère les valeurs des clés "DatabaseType" et "ConnectionString"
            // dans le fichier "app.config" de l'application..
            var databaseType = ConfigurationManager.AppSettings[KEY_DATABASE_TYPE];

            var connectionString = ConfigurationManager.AppSettings[KEY_CONNECTION_STRING];

            if (databaseType == KEY_DB_SQLSERVER)
            {
                result = new SqlServerDbAccessor(connectionString, mappedObject);
            }
           /* else if (databaseType == KEY_DB_MYSQL)
            {
                result = new MySqlDbAccessor(connectionString, mappedObject);

            }*/
            else
            {
                string msg = string.Format("La valeur {0} n'est pas une valeur admise",
                                           databaseType);
                throw new KeyNotFoundException("");
            }

            return result;
        }


    }
}
